package com.xxjqr.rbac.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xxjqr.rbac.entity.dto.MenuDto;
import com.xxjqr.rbac.entity.pojo.TbMenu;
import com.xxjqr.rbac.entity.vo.MenuDetailVo;
import com.xxjqr.rbac.entity.vo.MenuListVo;
import com.xxjqr.rbac.enums.StatusEnum;
import com.xxjqr.rbac.exception.CommonException;
import com.xxjqr.rbac.service.TbMenuService;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;
import java.util.Objects;


/**
 * <p>
 * 菜单表 前端控制器
 * </p>
 *
 * @author 丁昌江
 * @since 2021-01-22
 */
@RestController
@RequestMapping("menu")
@AllArgsConstructor
public class TbMenuController {

    private final TbMenuService menuService;

    /**
     * @描述 获取菜单里列表
     * @param name java.lang.String
     * @param status java.lang.Integer
     * @返回 java.util.List<com.xxjqr.rbac.entity.vo.MenuVo>
     * @码农 丁昌江
     * @日期 2021/2/19 16:58
     */
    @GetMapping("getMenuTree")
    public List<MenuListVo> getMenuTree(String name, StatusEnum status) {
        return menuService.getMenuTree(name,status);
    }


    /**
     * @描述 添加菜单
     * @返回 java.lang.String
     * @码农 丁昌江
     * @日期 2021/2/18 14:05
     */
    @PostMapping("addMenu")
    public Boolean addMenu(@RequestBody @Valid MenuDto menuDto) {
        if (menuService.addMenu(menuDto) > 0) {
            return true;
        }
        return false;
    }


    /**
     * @描述 编辑菜单
     * @码农 丁昌江
     * @日期 2021/3/17 22:20
     * @param menuDto
     * @返回 java.lang.Boolean
     */
    @PutMapping("editMenu")
    public void editMenu(@RequestBody @Valid MenuDto menuDto) {
        if (Objects.isNull(menuDto.getId())) {
            throw CommonException.generate("参数缺少菜单id");
        }
        if (menuService.editMenu(menuDto) <= 0) {
            throw CommonException.generate("找不到对应菜单");
        }
    }

    /**
     * @描述 delMenu
     * param id 欲删除的菜单id
     * @返回 int
     * @码农 丁昌江
     * @日期 2021/1/31 19:29
     */
    @DeleteMapping("delMenu")
    public Boolean delMenu(@RequestParam Long id) {
        if (menuService.delMenu(id)>0) {
            return true;
        }
        return false;
    }
}
